﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

using SBPweb.Forge.Contracts.Components;

using SBPweb.Communication.Shared.Library.Contacts;
using SBPweb.Communication.Shared.Library.Configuration;

namespace SBPweb.Communication.Shared.Library.Conversations
{

    public interface IConversationManager : IInitializable, IConfigurationDescriptorApplicant<IConversationManagerConfiguration>
    {

        #region Property accessors

        Dictionary<IContact, IConversation> Conversations
        {
            get;
        }

        #endregion

        #region Events

        event EventHandler<ConversationEventArgs> ConversationOpened;

        event EventHandler<ConversationEventArgs> ConversationClosed;

        #endregion

        #region Methods

        void OpenConversationWith(IContact contact);

        void OpenConference(string conferenceName);

        void OpenConference(IContact conferenceId);

        void OpenConference(string conferenceName, List<IContact> members);

        void OpenConference(IContact conferenceId, List<IContact> members);

        #endregion

    }

}